﻿#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

/********************************************************
    “启动线程”按钮点击事件
    在启动线程时调用了start()函数，然后设置了两个按钮的状态。
*******************************************************/
void Dialog::on_startButton_clicked()
{
    thread.start();
    ui->startButton->setEnabled(false);
    ui->stopButton->setEnabled(true);    
    connect(&thread, SIGNAL(stringChanged(QString)), this, SLOT(changeString(QString)));// 关联线程中的信号和本类中的槽
}

/*********************************************************************************************
    “终止线程”按钮点击事件
    在终止线程时，先使用isRunning()来判断线程是否在运行，
    如果是，则调用stop()函数来终止线程，并且更改两个按钮的状态。
**********************************************************************************************/
void Dialog::on_stopButton_clicked()
{
    if (thread.isRunning()) {
        thread.stop();
        ui->startButton->setEnabled(true);
        ui->stopButton->setEnabled(false);
    }
}


/***************************************
    将子线程发送过来的字符串显示到主界面上
    关联的子线程是mythread
*****************************************/
void Dialog::changeString(const QString &str)
{
    ui->label->setText(str);
}
